<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // 1- 常见的生成Undefined的环境：
    // 1-1-变量被声明了，但没有赋值时，就等于undefined
    // {
    //     var a;
    //     let b;
    //     console.log(a, b);// undefined undefined
    // }

    // 1-2-调用函数时，应该提供的参数没有提供，该参数等于undefined
    // {
    //     const fn = function(a,b,c,d){
    //         console.log(a,b,c,d);// 1 2 3 undefined
    //     }
    //     fn(1,2,3);
    // }

    // 1-3- 对象没有赋值的属性，该属性的值为undefined
    // {
    //     const obj = {
    //         a:1,
    //         b:2,
    //         c:3
    //     }
    //     console.log(obj.a,obj.b,obj.c,obj.d);// 1 2 3 undefined
    // }


    // 1-4- 函数没有返回值时或return右侧没有内容时，默认返回undefined
    // {
    //     const fn = function(){
    //
    //     }
    //     console.log(fn());// undefined
    //
    //     const fn1 = function(){
    //         return;
    //     }
    //     console.log(fn());// undefined
    //
    //     const fn2 = function(){
    //         return;
    //         return 100;
    //     }
    //     console.log(fn2());// undefined
    // }
    // 2- Undefined常被用于条件判断
    // 2-1- 判断函数是否传递参数
    // {
    //     function fn(a){
    //         // 不够严谨
    //         // if(a){
    //         //     console.log("接收到了a",a);
    //         // }else{
    //         //     console.log("未接收到a")
    //         // }
    //
    //         // 优化1
    //         // if(a !== undefined){
    //         //     console.log("接收到了a",a);
    //         // }else{
    //         //     console.log("未接收到a")
    //         // }
    //
    //         // 优化2
    //         if(typeof a === "undefined") console.log("未接收到a")
    //         else console.log("接收到了a",a);
    //
    //     }
    //     fn();
    //     fn(0);
    //     fn("");
    //     fn(false);
    // }
    // 2-2- 判断对象是否拥有指定的属性
    {
        const obj = {
            a:0
        }
        delete obj.a;
        if(obj.a === undefined){
            console.log("无值",obj.a);
        }else{
            console.log("有值",obj.a);
        }
    }
</script>
</html>